/**
 * 全局数据缓存（不会本本地化）
 */

export default {
	state: {
		// 最新版本（用于提示）
		latestVersion: '',
		// 网络状态
		networkType: '',
	},
	getters: {
		// 是否在线
		isOnline: (state) => {
			return state.networkType && state.networkType !== 'none'
		},
		// 是否有更新版本
		hasNewVersion: (state) => {
			return !!state.latestVersion
		},
	},
	mutations: {
		// 设置最新版本号
		getLatestVersion(state, version) {
			state.latestVersion = version
		},
		// 设置网络状态
		getNetworkType(state, type) {
			state.networkType = type
		},
	},
	actions: {
		// 设置最新版本提示
		setLatestVersion({ commit }, version) {
			commit('getLatestVersion', version)
		},
		// 清除最新版本提示
		clearLatestVersion({ commit }) {
			commit('getLatestVersion', '')
		},
		// 设置网络状态
		setNetworkType({ commit }, type) {
			commit('getNetworkType', type)
		},
		// 单次网络检测，无网络则抛出异常（自动设置）
		checkNetwork: async function ({ state, commit }) {
			return await new Promise((resolve, reject) => {
				uni.getNetworkType({
					success: (res) => {
						commit('getNetworkType', res.networkType)
						if (res.networkType === 'none') {
							reject()
						} else {
							resolve(res.networkType)
						}
					},
					fail: () => {
						commit('getNetworkType', 'fail')
						resolve('fail')
					},
				})
			})
		},
	},
}
